package org.ala.tiktools.rocketmq.annotations;

import org.ala.tiktools.rocketmq.Namespace;
import org.springframework.stereotype.Component;

import java.lang.annotation.*;


/**
 * ConsumerService注解
 *
 * @author ala
 * @date 2024-11-29 13:41
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface ConsumerService {


    /**
     *  namesrv
     *  <p> 若为NULL则使用公共配置
     */
    String namesrvAddrs() default Namespace.NULL;


    /**
     *  消费组
     *  <p> 如果不为NULL，Service类下的默认group
     */
    String group() default Namespace.DEFAULT_GROUP;
    /**
     *  topic
     *  <p> 如果不为NULL，Service类下的默认topic
     */
    String topic() default Namespace.NULL;


    /**
     *  线程池相关配置
     *  <p> 如果这里配了，则该ConsumerService使用独立线程池
     *  <p> 否则使用公共线程池
     */
    int coreSize() default Namespace.INF;
    int maxSize() default Namespace.INF;
    /**
     *  当队列满时，消费会暂停。当队列长度小于 queueSize * queueRation 时，消费会继续
     */
    int queueSize() default 1024;
    float queueRation() default 0.5f;
}
